/*
* 数据文件操作模块
*
* 只操作数据，不关心业务
* */

const fs = require('fs')
const dbPath = './db.json'

const mongoose = require('mongoose')
//连接mongodb 数据库
mongoose.connect('mongodb://localhost/student',{ useNewUrlParser: true, useUnifiedTopology: true,useFindAndModify:false })
//创建集合
const Schema = mongoose.Schema

const Student = mongoose.model('Student',new Schema({
    id:Number,
    name:String,
    gender:Number,
    age:Number,
    hobbies:String
}))


/*
* 查找数据
* return []
* */
const find = (callback)=> {
    /*fs.readFile(dbPath,'utf8',(err,data)=>{
        if(err){
            return callback(err)
        }
        callback(null,JSON.parse(data).student)
    })
    */
    Student.find((err,student)=>{
        if(err){
            console.log("数据查询失败！！！")
            callback(err)
        }else{
            callback(null,student)
        }
    })
}

/*
* 添加数据
* */

const save = (studentData,callback)=>{
    /*find((err,data)=>{
        if(err){
            return callback(err)
        }
        studentData.id = data[data.length -1].id + 1

        data.push(studentData)

        writeData(data,callback)
    })
    */
    find((err,data)=>{
        if(err){
            return callback(err)
        }
        if( data.length > 0 ){
            studentData.id = data[data.length -1].id + 1
        }else{
            studentData.id = 0
        }
        writeData(studentData,callback)
    })
}
/*
    模块内部方法
* 写入整体文件
* */

const writeData = (data,callback)=>{
    /*fs.writeFile(dbPath,JSON.stringify({
        student:data
    }),(err)=>{
        if(err){
            return callback(err)
        }
        callback()
    })*/
    console.log(data)
    new Student(data).save((err,ret)=>{
        if(err){
            callback(err)
        }else{
            console.log("数据存储成功！")
            callback()
        }
    })
}
/*
* 删除学生数据
* */
const deleteStudent = (id,callback)=>{
    /*find((err,data)=>{
        if(err){
            return callback(err)
        }
        let idx = '';
        for( let i=0;i<data.length;i++ ){
            if( data[i].id == id ){
                idx = i
            }
        }
        if(idx !== ''){
            data.splice(idx,1)
            writeData(data,callback)
        } else {
            callback('未找到该学生！')
        }
    })*/

    Student.findOneAndRemove({
        id
    },(err,ret)=>{
        if(err){
            callback(err)
        }else{
            console.log("删除成功！")
            callback()
        }
    })
}

/*
*   编辑学生资料
* */

const edit = (id,callback)=>{
    /*find((err,data)=>{
        let _data = {}
        for (let i=0;i<data.length;i++){
            if( data[i].id == id ){
                _data = data[i]
            }
        }
        callback(_data)
    })
    */
    Student.find({
        id
    },(err,ret)=>{
        if(err){
            console.log(err,"数据查找失败！！！")
        }else{
            console.log(ret)
            callback(ret[0])
        }
    })
}
/*
* 修改数据
* */
const editPost = (_data,callback)=>{
    /*find((err,data)=>{
        if(err){
           return callback(err)
        }
        for (let i=0;i<data.length;i++){
            if( data[i].id == _data.id ){
                data[i] = _data
            }
        }
        writeData(data,(err)=>{
            callback(err)
        })
    })*/
    console.log("ssssssss")
    Student.findOneAndUpdate({
        id:_data.id
    },_data,(err,ret)=>{
        console.log(ret)
        if(err){
            console.log("数据修改失败！！！")
            callback(err)
        }else{
            callback()
        }
    })
}


module.exports = {
    find,
    save,
    deleteStudent,
    edit,
    editPost
}